﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Programacion3_TPFinal_LosBorbotones
{
            
    public partial class Form2 : Form
    {
        //DataSet dsYamabushi;
        DataSet dsYamabushi;    
        Datos obDatos = new Datos();

        string rutaBD = "Data Source=localhost;Initial Catalog=Yamabushi;Integrated Security=True";
            
        public Form2()
        {
            InitializeComponent();
  
        }

        
        private void Form2_Load(object sender, EventArgs e)
        {
            //string ConsultaSQLAlumnos = "Select Dni_Alumno, Nombre_Alumno, Apellido_Alumno, Edad_Alumno, Telefono_Alumno, Telefono2_Alumno, FechaIngreso_Alumno from Alumnos order by Apellido_Alumno";
            string ConsultaSQLAlumnos = "Select * from Alumnos order by Apellido_Alumno";
            dsYamabushi = new DataSet();

            AgregarTablaDataSetSQLServer(rutaBD, ConsultaSQLAlumnos,
                                         "Alumnos", ref dsYamabushi);
            Grilla.DataSource = dsYamabushi.Tables[0];
            Grilla.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            Grilla_Sedes.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            Grilla_Cursos.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            Grilla.Columns[0].HeaderText = "DNI";
            Grilla.Columns[1].HeaderText = "Nombre";
            Grilla.Columns[2].HeaderText = "Apellido";
            Grilla.Columns[3].HeaderText = "Edad";
            Grilla.Columns[4].HeaderText = "Telefono";
            Grilla.Columns[5].HeaderText = "Telefono2";
            Grilla.Columns[6].HeaderText = "Fecha de Ingreso";
            Grilla.Columns[7].HeaderText = "Baja";
                         
         
            

            this.comboBox1.DataSource = obDatos.consultar2("Sedes");
            this.comboBox1.DisplayMember = "Nombre_Sede";
            this.comboBox1.ValueMember = "Cod_Sede";
            this.comboBox1.Refresh();

            
            
        }


        private void button4_Click(object sender, EventArgs e)
        {
            this.Close();
        }


        private void AgregarTablaDataSetSQLServer(string conexionBD, string ConsultaSQL,
                                string NombreTabla, ref DataSet ds)
        {
            SqlConnection cn = new SqlConnection(conexionBD);
            SqlDataAdapter adaptador = new SqlDataAdapter(ConsultaSQL, cn);
            cn.Open();
            adaptador.Fill(ds, NombreTabla);
        }


        private void ConstruirClausulaSQL(string NombreCampo,
                                          
                                           string Valor,
                                           ref string Clausula)
        {
            string d1 = " = ";  //Delimitador 1
            //string d2 = ""; //Delimitador 2
            if (Clausula == "")
                Clausula = Clausula + " WHERE ";
            else
                Clausula = Clausula + " AND ";
            
            Clausula =
                Clausula + NombreCampo + d1 + Valor;
        } // CONSTRUIRCLAUSULA


        private void button1_Click(object sender, EventArgs e)
        {
                 

            string ClausulaSQLProductos = "";
            if (txtDni.Text != "")
                ConstruirClausulaSQL("Dni_Alumno",
                                     txtDni.Text,
                                     ref ClausulaSQLProductos);
            if (txtNombre.Text != "")
                ConstruirClausulaSQL("Nombre_Alumno","'"+
                                     txtNombre.Text+"'",
                                     ref ClausulaSQLProductos);
            if (txtApellido.Text != "")
                ConstruirClausulaSQL("Apellido_Alumno", "'" +
                                     txtApellido.Text + "'",
                                     ref ClausulaSQLProductos);

            if (txtEdad.Text != "")
                ConstruirClausulaSQL("Edad_Alumno", "'" +
                                     txtEdad.Text + "'",
                                     ref ClausulaSQLProductos);

            if (txtTelefono1.Text != "")
                ConstruirClausulaSQL("Telefono_Alumno", "'" +
                                     txtTelefono1.Text + "'",
                                     ref ClausulaSQLProductos);

            dsYamabushi.Tables.Clear();
            /*AgregarTablaDataSetSQLServer(rutaBD,
                  "Select Dni_Alumno, Nombre_Alumno, Apellido_Alumno, Edad_Alumno, Telefono_Alumno, Telefono2_Alumno, FechaIngreso_Alumno from Alumnos " + ClausulaSQLProductos + " order by Apellido_Alumno ",
                                "Consulta",
                                ref dsYamabushi);*/
            AgregarTablaDataSetSQLServer(rutaBD,
                      "Select * from Alumnos " + ClausulaSQLProductos + " order by Apellido_Alumno",
                                    "Consulta",
                                    ref dsYamabushi);

            Grilla.DataSource = dsYamabushi.Tables["Consulta"];
            
            

        }


        private void button2_Click(object sender, EventArgs e)
        {
            /*this.Close();
            Form3 frm = new Form3();
            frm.Show();*/
            //verDetalles1.Visible = true;

        }
  

        private void textBox3_TextChanged(object sender, EventArgs e)
        {

        }

        private void button2_Click_1(object sender, EventArgs e)
        {
            //if (obDatos.eliminar("Alumnos", "Dni_Alumno=" + Grilla.CurrentRow.Cells[0].Value.ToString() + "")) { MessageBox.Show("Registro eliminado correctamente"); } else { MessageBox.Show("Error al eliminar el registro"); }
            //this.Close();
            if (Grilla.CurrentRow.Cells[7].Value.ToString() == "1")
            {
                string eliminar = "UPDATE Alumnos set Baja_Alumno=0 where Dni_Alumno =" + Grilla.CurrentRow.Cells[0].Value.ToString() + " ";
                obDatos.consultar(eliminar, "Alumnos");
                this.Close();
            }
            else { MessageBox.Show("El alumno ya esta dado de baja!!!"); }
        }

        private void Grilla_CellClick(object sender, DataGridViewCellEventArgs e)
        {

            button2.Enabled = true;
            button5.Enabled = true;
            button7.Enabled = true;
            button8.Enabled = true;
            groupBox3.Enabled = false;
            //Limpio grilla Cursos
            Grilla_Cursos.DataSource = null;
            Grilla_Cursos.Rows.Clear();
            //Limpio ComboBox Cursos
            comboBox2.DataSource = null;
            comboBox2.Items.Clear();
              
            
            //Aca para completar los de la Actualizacion
            string seleccionDni,SeleccionNombre,SeleccionApellido,SeleccionEdad,SeleccionTelefono1,SeleccionTelefono2;
            seleccionDni = Grilla.CurrentRow.Cells[0].Value.ToString();
            SeleccionNombre = Grilla.CurrentRow.Cells[1].Value.ToString();
            SeleccionApellido = Grilla.CurrentRow.Cells[2].Value.ToString();
            SeleccionEdad = Grilla.CurrentRow.Cells[3].Value.ToString();
            SeleccionTelefono1 = Grilla.CurrentRow.Cells[4].Value.ToString();
            SeleccionTelefono2 = Grilla.CurrentRow.Cells[5].Value.ToString();

            txtSelecDni.Text = seleccionDni;
            txtSelecNombre.Text = SeleccionNombre;
            txtSelecApellido.Text = SeleccionApellido;
            txtSelecEdad.Text = SeleccionEdad;
            txtSelecTel1.Text = SeleccionTelefono1;
            txtSelecTel2.Text = SeleccionTelefono2;


            // Completar Grillas sedes 
            string ConsultaSQLSedes = "Select Sedes.Nombre_Sede,Sedes.Cod_Sede from Sedes Inner Join Alumnos_X_Sedes on Sedes.Cod_Sede = Alumnos_X_Sedes.Cod_Sede where Alumnos_X_Sedes.Dni_Alumno = " + Grilla.CurrentRow.Cells[0].Value.ToString();  
            dsYamabushi = new DataSet();

            AgregarTablaDataSetSQLServer(rutaBD, ConsultaSQLSedes,
                                         "Sedes", ref dsYamabushi);
            Grilla_Sedes.DataSource = dsYamabushi.Tables[0];


        }

        private void button5_Click(object sender, EventArgs e)
        {
            string campos = "Dni_Alumno=" + txtSelecDni.Text + ", Nombre_Alumno='" + txtSelecNombre.Text + "', Apellido_Alumno='" + txtSelecApellido.Text + "', Edad_Alumno=" + txtSelecEdad.Text + ", Telefono_Alumno='" + txtSelecTel1.Text + "', Telefono2_Alumno='" + txtSelecTel2.Text + "'" ;
            if (obDatos.actualizar("Alumnos", campos, "Dni_Alumno=" + Grilla.CurrentRow.Cells[0].Value.ToString() + "")) { MessageBox.Show("Registro Actualizado"); } else { MessageBox.Show("Error al intentar Actualizar"); }
            this.Close();
            
        }


        private void button3_Click_2(object sender, EventArgs e)
        {
            if (obDatos.eliminar("Alumnos_X_Sedes", " Dni_Alumno = " + Grilla.CurrentRow.Cells[0].Value.ToString(), " Cod_Sede = " + Grilla_Sedes.CurrentRow.Cells[1].Value.ToString() + "") && obDatos.eliminar("Alumnos_X_Cursos_X_Sedes", " Dni_Alumno = " + Grilla.CurrentRow.Cells[0].Value.ToString(), " Cod_Sede = " + Grilla_Sedes.CurrentRow.Cells[1].Value.ToString())  ) { MessageBox.Show("Registro eliminado correctamente"); } else { MessageBox.Show("Error al eliminar el registro"); }
            this.Close();
           
        }


        private void button6_Click_1(object sender, EventArgs e)
        {
            if (obDatos.eliminar("Alumnos_X_Cursos_X_Sedes", "Dni_Alumno= " + Grilla.CurrentRow.Cells[0].Value.ToString() , " Cod_Curso = " + Grilla_Cursos.CurrentRow.Cells[1].Value.ToString() + " and Cod_Sede = " + Grilla_Sedes.CurrentRow.Cells[1].Value.ToString())) { MessageBox.Show("Registro eliminado correctamente"); } else { MessageBox.Show("Error al eliminar el registro"); }
            this.Close();
        }

    
        //Los valores de los txt Dni tienen q ser numeros
        private void txtSelecDni_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar < 48 || e.KeyChar > 59) && e.KeyChar != 8)
                e.Handled = true;
        }
        private void txtDni_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar < 48 || e.KeyChar > 59) && e.KeyChar != 8)
                e.Handled = true;
        }

        private bool Existe_Sede(string cod_sede)//Comprueva si el valor de la sede ingresada es valida
        {

            SqlConnection ConeccionSede = new SqlConnection(rutaBD);

            SqlCommand comando = new SqlCommand("select Cod_Sede from Sedes order by Cod_Sede",ConeccionSede);
            ConeccionSede.Open();
            SqlDataReader dr = comando.ExecuteReader();
            
            while (dr.Read())
            {
                if (dr[0].ToString() == cod_sede)
                {
                   return true;
                }
            }
            return false;
        }
        public bool Ya_existe_Sede(string dni,string codSede)//Comprueva si ya existe la convinacin de Dni y Cod Sede
        {
            SqlConnection ConeccionSede = new SqlConnection(rutaBD);

            SqlCommand comando = new SqlCommand("select Cod_sede,Dni_Alumno from Alumnos_X_Sedes order by Cod_Sede", ConeccionSede);
            ConeccionSede.Open();
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                if (dr[0].ToString() == codSede && dr[1].ToString() == dni)
                {
                    return false;
                }
            }
            return true;
        }

        private bool Existe_Curso(string cod_Curso)//Comprueva si el valor de la sede ingresada es valida
        {

            SqlConnection ConeccionCurso= new SqlConnection(rutaBD);

            SqlCommand comando = new SqlCommand("select Cod_Curso from Cursos order by Cod_Curso", ConeccionCurso);
            ConeccionCurso.Open();
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                if (dr[0].ToString() == cod_Curso)
                {
                    return true;
                }
            }
            return false;
        }
        public bool Ya_existe_Curso(string dni, string codCurso, string codSede)//Comprueva si ya existe la convinacin de Dni y Cod Sede
        {
            SqlConnection ConeccionCurso = new SqlConnection(rutaBD);

            SqlCommand comando = new SqlCommand("select Cod_Curso,Dni_Alumno,Cod_Sede from Alumnos_X_Cursos_X_Sedes", ConeccionCurso);
            ConeccionCurso.Open();
            SqlDataReader dr = comando.ExecuteReader();

            while (dr.Read())
            {
                if (dr[0].ToString() == codCurso && dr[1].ToString() == dni && dr[2].ToString() == codSede)
                {
                    return false;
                }
            }
            return true;
        }
        
        
        
        
        
        private void button7_Click(object sender, EventArgs e)
        {
            

            if (Ya_existe_Sede(Grilla.CurrentRow.Cells[0].Value.ToString(), this.comboBox1.SelectedValue.ToString()))
             {
                 string sql = "insert into Alumnos_X_Sedes (Dni_Alumno,Cod_Sede) values( " + Grilla.CurrentRow.Cells[0].Value.ToString() + " , " + this.comboBox1.SelectedValue.ToString() + ")";
                        if (obDatos.insertar(sql)) { MessageBox.Show("Registro Insertado"); } else { MessageBox.Show("Error al insertar"); }
                        this.Close();
             }
             else
             {
               MessageBox.Show("El alumno ya esta registrado en la Sede");
             }
            
        }

        private void button8_Click(object sender, EventArgs e)//Boton insertar Cursos al alumno en determinada Sede
        {

            if (Ya_existe_Curso(Grilla.CurrentRow.Cells[0].Value.ToString(), this.comboBox2.SelectedValue.ToString(), Grilla_Sedes.CurrentRow.Cells[1].Value.ToString()))
             {
                 string sql = "insert into Alumnos_X_Cursos_X_Sedes (Dni_Alumno,Cod_Curso,Cod_Sede) values( " + Grilla.CurrentRow.Cells[0].Value.ToString() + " , " + this.comboBox2.SelectedValue.ToString() + " , " + Grilla_Sedes.CurrentRow.Cells[1].Value.ToString() + ")";
                 string consulta = "insert into Cuotas (Dni_Alumno,Cod_Curso,Cod_Sede,importecurso) select " + Grilla.CurrentRow.Cells[0].Value.ToString() + " , " + this.comboBox2.SelectedValue.ToString() + " , " + Grilla_Sedes.CurrentRow.Cells[1].Value.ToString() + " , " + " importe from cursos where cod_curso = " + this.comboBox2.SelectedValue.ToString();
                 if (obDatos.insertar(sql)&& obDatos.insertar(consulta)) { MessageBox.Show("Registro Insertado"); } else { MessageBox.Show("Error al insertar"); }
                 this.Close();
             }
             else
             {
               MessageBox.Show("El alumno ya esta registrado en ese Curso de la Sede seleccionada");
             }

        }


        private void txtCodSede_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar < 48 || e.KeyChar > 59) && e.KeyChar != 8)
                e.Handled = true;
        }

        private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar < 48 || e.KeyChar > 59) && e.KeyChar != 8)
                e.Handled = true;
        }

        private void Grilla_Sedes_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            button3.Enabled = true;
            groupBox3.Enabled = true;

            //COmpletar Grilla Cursos
            string ConsultaSQLCursos = "Select Cursos.Nombre_Curso,Cursos.Cod_Curso from Cursos Inner Join Alumnos_X_Cursos_X_Sedes on Cursos.Cod_Curso = Alumnos_X_Cursos_X_Sedes.Cod_Curso  Inner Join Alumnos on Alumnos.Dni_Alumno =Alumnos_X_Cursos_X_Sedes.Dni_Alumno where Alumnos.Dni_Alumno = " + Grilla.CurrentRow.Cells[0].Value.ToString() + " and Alumnos_X_Cursos_X_Sedes.Cod_Sede = " + Grilla_Sedes.CurrentRow.Cells[1].Value.ToString();
            dsYamabushi = new DataSet();

            AgregarTablaDataSetSQLServer(rutaBD, ConsultaSQLCursos,
                                        "Cursos", ref dsYamabushi);
            Grilla_Cursos.DataSource = dsYamabushi.Tables[0];


            //COMBO BOX CURSOS
            //this.comboBox2.DataSource = obDatos.consultar3("Select Nombre_Curso,Cod_Curso from Cursos_X_Sedes where Cod_Sede = " + Grilla_Sedes.CurrentRow.Cells[1].Value.ToString(), "Cursos_X_Sedes");
            this.comboBox2.DataSource = obDatos.consultar3("Select Cursos.Nombre_Curso,Cursos.Cod_Curso from Cursos inner join Cursos_X_Sedes on Cursos.Cod_Curso = Cursos_X_Sedes.Cod_Curso where Cod_Sede = " + Grilla_Sedes.CurrentRow.Cells[1].Value.ToString(), "Cursos_X_Sedes");
            this.comboBox2.DisplayMember = "Nombre_Curso";
            this.comboBox2.ValueMember = "Cod_Curso";
            this.comboBox2.Refresh();

            
        }

        private void Grilla_Cursos_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            button6.Enabled = true;
        }

        private void button9_Click(object sender, EventArgs e)
        {

            if (txtDni.Text == "")
                txtDni.BackColor = Color.Red;
            else
                txtDni.BackColor = System.Drawing.SystemColors.Control;

            if (txtNombre.Text == "")
                txtNombre.BackColor = Color.Red;
            else
                txtNombre.BackColor = System.Drawing.SystemColors.Control;

            if (txtApellido.Text == "")
                txtApellido.BackColor = Color.Red;
            else
                txtApellido.BackColor = System.Drawing.SystemColors.Control;

            if (txtEdad.Text == "")
                txtEdad.BackColor = Color.Red;
            else
                txtEdad.BackColor = System.Drawing.SystemColors.Control;

            if (txtTelefono1.Text == "")
                txtTelefono1.BackColor = Color.Red;
            else
                txtTelefono1.BackColor = System.Drawing.SystemColors.Control;

            //-------------------------//


            if (txtDni.BackColor != Color.Red && txtNombre.BackColor != Color.Red && txtApellido.BackColor != Color.Red && txtEdad.BackColor != Color.Red && txtTelefono1.BackColor != Color.Red)
            {
                string sql = "insert into Alumnos (Dni_Alumno,Nombre_Alumno,Apellido_Alumno,Edad_Alumno,Telefono_Alumno,Telefono2_Alumno,FechaIngreso_Alumno, Baja_Alumno) values (" + this.txtDni.Text + ",'" + this.txtNombre.Text + "','" + this.txtApellido.Text + "'," + this.txtEdad.Text + ",'" + this.txtTelefono1.Text + "','" + this.txtTelefono2.Text + "',getdate(),1)";
                if (obDatos.insertar(sql)) { MessageBox.Show("Registro Insertado"); } else { MessageBox.Show("Error al insertar"); }
                this.Close();
            }
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void Grilla_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
           /* if ((int)this.Grilla.Rows[0].Cells["Baja_Alumno"].Value == 2)
            {
                Grilla.Rows[0].DefaultCellStyle.BackColor = System.Drawing.Color.Red;
            }*/

            for (int count = 0; count < Grilla.Rows.Count; count++)
            {
                if (Convert.ToInt32(this.Grilla.Rows[count].Cells[7].Value) == 0)
                {
                    Grilla.Rows[count].DefaultCellStyle.BackColor = System.Drawing.Color.Red;
                }
            }
        }

        private void button10_Click(object sender, EventArgs e)
        {
            if ( Grilla.CurrentRow.Cells[7].Value.ToString() == "0" ){
                string habilitar = "UPDATE Alumnos set Baja_Alumno=1 where Dni_Alumno =" + Grilla.CurrentRow.Cells[0].Value.ToString() + " ";
                obDatos.consultar(habilitar, "Alumnos");
                this.Close();}
            else { MessageBox.Show ( "El alumno ya esta habilitado !!!");}
                
        }

        private void Grilla_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void txtSelecEdad_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar < 48 || e.KeyChar > 59) && e.KeyChar != 8)
                e.Handled = true;
        }

        private void txtEdad_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar < 48 || e.KeyChar > 59) && e.KeyChar != 8)
                e.Handled = true;
        }

    

       
                  
    }
}
